﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Client
{
    public partial class FrmGuiClient : Form
    {
        NetworkStream stream;

        ClsClientMonitor klientMonitor;
        ClsSocket socketForbindelse;

        public FrmGuiClient()
        {
            InitializeComponent();
            klientMonitor = new ClsClientMonitor();
            klientMonitor.UdskrivningAfBesked += Udskriv;
        }

        public void TextUdskriv(string besked)
        {
            txtAfgivBud.AppendText(besked);
        }

        private void btnOpretForbindelse_Click(object sender, EventArgs e)
        {
            try
            {
                TcpClient server = new TcpClient(txtForbindelse.Text, 11000);

                stream = server.GetStream();

                socketForbindelse = new ClsSocket(klientMonitor, stream);

                Thread klientTråd = new Thread(socketForbindelse.StartForbindelse);

                klientTråd.IsBackground = true;

                klientTråd.Start();

                //Sætter Gui'en til at sove, da den forrige tråd lige skal hente info fra serveren
                //før den må skrive ud.
                Thread.Sleep(500);

                txtVareNavn.Text = klientMonitor.Split[0];
                txtStartPris.Text = klientMonitor.Split[1];
                txtNuværendeBud.Text = klientMonitor.Split[2] + Environment.NewLine;

                txtAfgivBud.Focus();
            }

            catch
            {
                MessageBox.Show("Forbindelse til serveren kunne ikke etableres. Serveren er muligvis offline. Prøv igen senere.", "Fejl opstået", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        public void Udskriv(string besked)
        {
            if (InvokeRequired)
            {
                Invoke(new ClsClientMonitor.UdskrivBesked(Udskriv), besked);
            }

            else
            {
                txtNuværendeBud.Text += besked + Environment.NewLine;
            }
        }

        private void btnBydPåVarer_Click(object sender, EventArgs e)
        {
            try
            {
                StreamWriter writer = new StreamWriter(stream);

                writer.WriteLine(txtAfgivBud.Text);
                writer.Flush();

                txtAfgivBud.Clear();
            }

            catch
            {
                MessageBox.Show("Du er ikke tilknyttet et auktionshus");
            }

        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtNuværendeBud_TextChanged(object sender, EventArgs e)
        {
            txtNuværendeBud.SelectionStart = txtNuværendeBud.Text.Length;
            txtNuværendeBud.ScrollToCaret();
        }


    }
}

